// components/ad-counter/ad-counter.js
const ad = require('../../utils/ad')

Component({
	properties: {
		type: {
			type: String,
			value: 'extract' // 默认为提取类型，可选值：extract（提取）, download（下载）
		}
	},

	data: {
		maxCount: 3, // 默认最大次数
		currentCount: 0, // 当前已用次数
		remainingCount: 3, // 剩余次数
		percentage: 0, // 进度百分比
		showTip: false, // 是否显示提示信息
		isCompleted: false // 是否已完成今日观看任务
	},

	lifetimes: {
		attached() {
			this.initCounter()
		}
	},

	methods: {
		// 初始化计数器
		initCounter() {
			const type = this.properties.type
			const isExtract = type === 'extract'

			// 确保日期检查
			ad.checkAndUpdateDateCount()

			// 设置最大观看次数
			const maxCount = isExtract ? ad.maxWatchCount : ad.maxDownloadWatchCount

			// 获取当前观看次数
			const currentDate = new Date().toDateString()
			const storedDate = wx.getStorageSync(isExtract ? 'watchDate' : 'downloadWatchDate')

			// 如果日期不一致，说明是新的一天
			let currentCount = 0
			if (storedDate === currentDate) {
				currentCount = wx.getStorageSync(isExtract ? 'watchCount' : 'downloadWatchCount') || 0
			}

			// 计算进度百分比
			const percentage = Math.min(100, (currentCount / maxCount) * 100)

			// 检查是否需要广告
			const requiresAd = isExtract
				? ad.adConfig.requireRewardedVideo
				: ad.adConfig.requireDownloadVideo

			// 是否已完成今日观看任务
			const isCompleted = currentCount >= maxCount

			this.setData({
				maxCount,
				currentCount,
				percentage,
				isCompleted,
				// 当前是否需要观看广告 (需要广告开关打开 且 未完成观看次数)
				requireAd: requiresAd && !isCompleted
			})
		},

		// 显示提示信息
		showTipInfo() {
			this.setData({
				showTip: true
			})

			// 3秒后自动关闭提示
			setTimeout(() => {
				this.setData({
					showTip: false
				})
			}, 3000)
		},

		// 关闭提示信息
		closeTip() {
			this.setData({
				showTip: false
			})
		},

		// 阻止事件冒泡
		stopPropagation() {
			// 仅阻止冒泡，不做其他操作
			return
		}
	}
})
